﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//Librerías que yo uso
using Librerias;
using System.Data;
using System.IO;

namespace eCampusWeb
{
    public partial class NoticiaCrear : System.Web.UI.Page
    {
        ENTurno t;
       

        #region Page_Load()
        protected void Page_Load(object sender, EventArgs e)
        {
            ApagaAvisos();

            if (!IsPostBack)
            {
                 //Si estamos autenticados
                if (Session["tipo"] != null)
                {
                    //Estando autenticados somos profesores
                    if (Session["tipo"].ToString() == "1")
                    {
                        EnseñaSiAutenticado();
                        cargaDatosPorDefectoParaCrearNoticia();                    
                    }

                    //SI NO ES PROFESOR - NADIE PUEDE CREAR NOTICIAS
                    else
                    {
                        EscondeSiNoAutenticado();
                        AvisaSiNoAutenticado();
                    }
                }

                //SI NO ES PROFESOR - NADIE PUEDE CREAR NOTICIAS
                else
                    {
                        EscondeSiNoAutenticado();
                        AvisaSiNoAutenticado();
                    }
                }
            }
        #endregion

        #region btPublicar_Click(object sender, EventArgs e)
        public void btPublicar_Click(object sender, EventArgs e)
        {
            ApagaAvisos();

            #region CompruebaQueTodoLaNoticiaRellenitaParaCrear()
        
            bool hayError=false;

            //asunto no puede ser vacío
            if (tbAsunto.Text == "")
            {
                hayError = true;
                AvisaExcepcion("Asunto de la Noticia no puede ser vacío");
                tbAsunto.Focus();
            }

            //cuerpo no puede ser vacío
            if (hayError == false)
            {
                if (tbCuerpo.Text == "")
                {
                    hayError = true;
                    AvisaExcepcion("Cuerpo de la Noticia no puede ser vacío");
                    tbCuerpo.Focus();
                }
            }
        
            #endregion

            if (hayError == false)
            {
                //VARIABLES PARA EXTRACCIÓN Y PERSISTENCIA
                int esPublica;
                string elAdjunto = "";
                string usuarioActivo = "";

                //EXTRACTO
                //Si pública o no
                if (rbPublicidad.SelectedItem.Text == "Todo el mundo")
                {
                    esPublica = 1;
                }
                else esPublica = 0;

                //El usuario de la sesión
                usuarioActivo = Session["correo"].ToString();

                try
                {
                    //PERSISTO  
                    ENNoticias not1 = new ENNoticias(usuarioActivo, DropDownList1.SelectedItem.Text, tbAsunto.Text, tbCuerpo.Text.Replace("\r\n", "<br/>"), elAdjunto, esPublica);
                    not1.NuevaNoticiaWeb(not1);
                    //INFORMO AL MURO
                    //DataTable idNoticiaCalentita = new DataTable();
                    //idNoticiaCalentita = not1.dimeLaUltimaNoticia(usuarioActivo);
                    //new Librerias.EN.ENMuro().AddAviso(usuarioActivo, "una noticia", "NoticiaDetalle?id=" + int.Parse(idNoticiaCalentita.Rows[0][0].ToString()));

                    //CARGO LA SIGUIENTE PÁGINA
                    Response.Redirect("~/Noticias.aspx");
                }
                catch (NullReferenceException ex)
                {
                    AvisaExcepcion(ex.Message);
                }
                catch (Exception ex)
                {
                    AvisaExcepcion(ex.Message);
                }
                catch
                { 
                
                }
            }
        }
        #endregion
        #region EscondeSiNoAutenticado()
        /// <summary>
        /// Esconde los elementos del formulario que no deben ser vistos por el profesor
        /// </summary>
        public void EscondeSiNoAutenticado()
        {
            lbParaLaAsignatura.Visible = false;
            DropDownList1.Visible = false;
            lbAsunto.Visible = false;
            tbAsunto.Visible = false;
            lbCuerpo.Visible = false;
            tbCuerpo.Visible = false;
            lbPublicidad.Visible = false;
            rbPublicidad.Visible = false;
            btPublicar.Visible = false;
        }
        #endregion
        #region AvisaSiNoAutenticado()
        public void AvisaSiNoAutenticado()
        {
            lbAviso.Text = "¡Opss! Debe estar autenticado cómo profesor para acceder a Crear Noticias";
            lbAviso.Visible = true;     
        }
        #endregion
        #region ApagaAvisos()
        public void ApagaAvisos()
        {
            lbAviso.Visible = false;
        }
        #endregion
        #region EnseñaSiAutenticado()
        public void EnseñaSiAutenticado()
        {
            lbParaLaAsignatura.Visible = true;
            DropDownList1.Visible = true;
            lbAsunto.Visible = true;
            tbAsunto.Visible = true;
            lbCuerpo.Visible = true;
            tbCuerpo.Visible = true;
            lbPublicidad.Visible = true;
            rbPublicidad.Visible = true;
            btPublicar.Visible = true;
        }
        #endregion
        #region cargaDatosPorDefectoParaCrearNoticia()
        public void cargaDatosPorDefectoParaCrearNoticia()
        {
            t = new ENTurno();
            ///En ppio la noticia será pública
            rbPublicidad.SelectedValue = "Todo el mundo";

            ///Relleno combobox
            if (Convert.ToInt32(Session["tipo"]) == 1)
            {
                DataTable asigProfe = t.GetAsignaturasProfesor(Session["correo"].ToString());
                DropDownList1.DataSource = asigProfe;
                DropDownList1.DataTextField = asigProfe.Columns[0].ToString();
                DropDownList1.DataValueField = asigProfe.Columns[0].ToString();
                DropDownList1.DataBind();
            }
        }
        #endregion
        #region AvisaExcepcion(string error)
        public void AvisaExcepcion(string error)
        {
            lbAviso.Text = error;
            lbAviso.Visible = true;
        }
        #endregion
    }
}